iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

一個月的後端學習之旅系列 第 13

【DAY13】物件導向語法

  • 分享至 

  • xImage
  •  

Object 物件

每個 JavaScript 物件都有 properties 以及 method,屬於物件的 function 被稱為method

function 是指自訂函數,method 是屬於某物件的 function (例如:array 的 push)

物件的屬性與相對應的值是一種 key-value pair(某個 key 可以對上某個值),想要獲取物件屬性的方式可以透過 .notation 或是 []

let Phoebe = {
  // 製作新物件,可以設定屬性properties(key-value pair), 行為methods

  // 屬性properties
  first_name: "Phoebe",
  last_name: "Lee",
  age: 23,

  // 行為methods
  sayHi() {
    console.log("Phoebe says hi.");
  },

  // 可以有多個methods
  walk() {
    console.log("Phoebe is walking.");
  },

  // 要加入參數
  speak(words) {
    console.log("Phoebe says" + words);
  },
};

// 執行properties
// 方法1
console.log(Phoebe.first_name);

// 方法2
console.log(Phoebe["first_name"]);

// 執行methods
Phoebe.sayHi();
Phoebe.walk();
Phoebe.speak("今天心情不錯");

JavaScript Object 是一種雜湊表 hashtable,物件的獲取都是 O(1)

在 method 中的 this 關鍵字指的是調用該方法 method 的物件,用this的好處是當值改變,不需要一一到 method 去修改

let Phoebe = {
  first_name: "Phoebe",
  last_name: "Lee",
  age: 23,

  sayHi() {
    console.log(this.first_name + " says hi."); // this指向Phoebe這個物件
  },
}

Phoebe.sayHi();  // -> Phoebe says hi.

!!function沒有調用該function的物件,則this指向window物件

function hello() {
  console.log("hello");
  console.log(this); // -> 指向window object (glogal object)
}

hello();
// 純function,不是method
// -> hello
// -> Window {window: Window, self: Window, document: document, name: '', location: Location, …}

在 JavaScript 當中的functionarray 其實都是Object

arrayfunction都是special type of objects,雖然這樣說,但由以下的程式碼可看出,array的型態是object,function的型態卻是function(是JavaScript的一個bug)

let arr = [1, 2, 3, 4, 5];
console.log(typeof arr);  // -> object

function hello() {
  console.log("hello world");
}

console.log(typeof hello);  // -> function
console.log(typeof hello());  // -> 不能加(),不然會變成執行後的typeof

要如何確認array型態呢?

Array.isArray()

true if value is an Array; otherwise, false

let arr = [1, 2, 3, 4, 5];
console.log(Array.isArray(arr));  // -> true

下一篇文章來學習迴圈for、while、do while。


上一篇
【DAY12】函數的時間複雜度
下一篇
【DAY14】 for、while、do while
系列文
一個月的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言